import request from "@/utils/request"

export enum InvoiceStatus {
  待开票 = 1,
  开票成功 = 2,
  开票失败 = 4,
  开票中 = 5,
  红冲中 = 6,
  已红冲 = 7,
  红冲失败 = 8,
}

export enum InvoiceTitleType {
  公司 = 2,
  个人 = 1,
}

export interface QueryInvoiceListParams extends PaginationParams {
  status?: InvoiceStatus
  telephone?: string
}

export interface Invoice {
  /** 开户行 */
  bank: string
  /** 银行卡号 */
  bankCode: string
  /** 车牌号 */
  carPlat: string
  /** 详细地址 */
  companyAddress: string
  /** 公司税号 */
  companyCode: string
  /** 邮箱 */
  email: string
  /** ID */
  recordId: string
  /** 抬头名称 */
  infoName: string
  /** 抬头类型 1 公司 2 个人 */
  infoType: InvoiceTitleType
  /** 申请人昵称 */
  nickname: string
  /** 电量（度） */
  power: number
  /** 发票抬头信息：号码 */
  telephone: string
  /** 用户手机号 */
  userPhone: string
  /** 服务费 */
  serviceMoney: number
  /** 电费 */
  electricMoney: number
  /** 总费用 */
  totalMoney: number
  /** 申请时间 */
  createTime: string
  /** 状态 */
  status: InvoiceStatus
  pdfUrl: string
  /** 失败原因 */
  reason: string
  /** 备注 */
  commend: string
}

export async function queryInvoiceList(params: QueryInvoiceListParams) {
  return request<Invoice[]>('/app/manager/invoice/list', {
    data: params,
  })
}

export async function reMakeInvoice(params: {invoiceId: string}) {
  return request<boolean>('/app/manager/invoice/reOpen', {
    data: params,
  })
}

export interface InvoiceOfOrder {
  /** 单号 */
  orderId: string
  /** 终端编号 */
  stubId: string
  /** 充电结束时间 */
  timeEnd: string
  /** 充电开始时间 */
  timeStart: string
  /** 电量 */
  power: number
  /** 场站名称 */
  stationName: string
}

export async function queryInvoiceListOfOrder(params: {invoiceId: string} & PaginationParams) {
  return request<InvoiceOfOrder[]>('/app/manager/invoice/detail', {
    data: params,
  })
}

export async function getInvoiceStatus() {
  return request<any>('/app/manager/invoice/thirdStatus', {
    data: {},
    errHandle: false,
  })
}

export async function invoiceLogin() {
  return request<any>('/app/manager/invoice/loginS', {
    data: {},
    errHandle: false,
  })
}

export async function postCode(params: {code: string}) {
  return request<any>('/app/manager/invoice/setYzm', {
    data: params,
    errHandle: false,
  })
}

export async function getQrCode() {
  return request<any>('/app/manager/invoice/scanC', {
    data: {},
    errHandle: false,
  })
}
